﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Chillis.CRM.Data;
using Facebook;

namespace Chillis.CRM.Services
{
    public class AtencionPublicacionService
    {
        /*
        public bool RegistrarPublicacion(Publicacion publicacion)
        {

            string postId = FacebookService.PublicarEstadoFB(publicacion.Contenido);

            publicacion.PostId = postId;

            var resultado = DPublicacion.Instancia.RegistrarPublicacion(publicacion);
            return (resultado > 1);
        }

        public bool ResponderComentario(Comentario comentario)
        {
            var postId = DComentario.Instancia.ObtenerPostId(comentario.IdComentario);

            FacebookService.PublicarComentarioFB(comentario.Replica, postId);

            var resultado = DComentario.Instancia.ActualizarComentario(comentario);
            return (resultado > 1);
        }

        public IList<ConsultaComentario> ListarUltimosComentarios()
        {
            return DComentario.Instancia.ObtenerUltimosComentarios();
        }

        public IList<ConsultaComentario> ListarComentarios(DateTime fechaInicio, DateTime fechaFin)
        {
            return DComentario.Instancia.ObtenerComentarios(fechaInicio, fechaFin);
        }

        public IList<TipoPublicacion> ObtenerTipoPublicacion()
        {
            return DTipoPublicacion.Instancia.ListarTipoPublicacion();
        }

        public IList<ClaseComentario> ObtenerClaseComentario()
        {
            return DClaseComentario.Instancia.ObtenerClaseComentario();
        }

        public IList<TipoComentario> ObtenerTipoComentario()
        {
            return DTipoComentario.Instancia.ObtenerTipoComentario();
        }

        public IList<RedSocial> ObtenerRedSocial()
        {
            return DRedSocial.Instancia.ObtenerRedSocial();
        }

        public DetalleComentario ObtenerDetalleComentario(int idComentario)
        {
            return DComentario.Instancia.ObtenerDetalleComentario(idComentario);
        }
        */
    }

    /*
    public class FacebookService
    {

        const string FACEBOOK_APP_ID = "494855570579929";
        const string FACEBOOK_SECRET = "b3ecef24d936a5282134940b410c2748";
        //const string TOKEN = "BAAHCEYpZC4dkBAJAkfYvMgWUqRbTZATNJsRcDS2z7LryhpkeD7wft89wuBOYFHNU0S1H71SI7TWZCxUEREvQNa9GWpZCZAFBs0ZCFZBEClox7C7jz4zdMYJATweYmjZBMZCm0TVkEVxzKiRJmCrjFIUbpNbWUP2sI5e4bnZA1iFZBgkPSLlqOikgZAY5oEL5Qhuj329DcNM1eBpiTGkhhSGYAmlT";
        const string TOKEN = "BAAHCEYpZC4dkBAOdfAMieBvzZB2eazTWgu5MWCaDfrKZA7JndFYNjgJlZCNvYk5qZBOHZBY2FXQlkj7kZBXr9CLyYzBn9CLp0K2N56rymrcKTLOkTwmS6uPUHtGZBeIZC1P4ZD";
        const long CHILLIS_PROFILE_ID = 100004311372932;

        public static string PublicarEstadoFB(string mensaje)
        {
            string respuesta = null;
            try
            {
                dynamic fbResponse = WriteMessageToFacebookWall(mensaje, CHILLIS_PROFILE_ID, TOKEN);

                string objectId = fbResponse.id;
               "100004311372932_180878422065869"
                    post id
                    author id
               
                string[] objectIdArray  = objectId.Split('_');
                string authorId = objectIdArray[0];
                string postId = objectIdArray[1];

                return postId;
            }
            catch (Exception ex)
            {
                throw;
            }
        }

        public static dynamic PublicarComentarioFB(string mensaje, string postId)
        {
            dynamic respuesta;
            try
            {
                respuesta = WriteCommentToFacebookWall(mensaje, postId, TOKEN);
                return respuesta;
            }
            catch (Exception ex)
            {
                throw;
            }
        }

        private static dynamic WriteMessageToFacebookWall(string message, long facebookId, string token)
        {
            dynamic postResponse;
            try
            {
                postResponse = PostToFacebookWall(token, message, facebookId);
                return postResponse;
            }
            catch (Exception ex)
            {
                throw;
            }
        }

        private static dynamic WriteCommentToFacebookWall(string message, string postId, string token)
        {
            dynamic postResponse;

            try
            {
                postResponse = PostToComment(token, message, postId);
                return postResponse;
            }
            catch (Exception ex)
            {
                throw;
            }
        }

        public static string GetFacebookAccessToken(string code, string returnUrl, string fbRedirectUri)
        {
            var f = new FacebookClient();
            dynamic result = f.Get("oauth/access_token", new
            {
                client_id = FACEBOOK_APP_ID,
                client_secret = FACEBOOK_SECRET,
                redirect_uri = fbRedirectUri,
                code = code,
                state = returnUrl
            });
            return result.access_token as string;
        }

        public static dynamic GetFacebookResponse(string actionUrl, string accessToken)
        {
            FacebookClient FbApp;
            if (string.IsNullOrEmpty(accessToken))
            {
                FbApp = new FacebookClient();
            }
            else
            {
                FbApp = new FacebookClient(accessToken);
            }
            return FbApp.Get(actionUrl) as JsonObject;
        }

        private static dynamic PostToFacebookWall(string token, string message, long facebookId)
        {

            FacebookClient FbApp = new FacebookClient(token);
            IDictionary<string, object> postArgs = new Dictionary<string, object>();
            postArgs["message"] = message;
            if (token != null) postArgs["access_token"] = token;
            postArgs["uid"] = facebookId;
            var result = FbApp.Post("/" + facebookId + "/feed", postArgs);

            return result;
        }

        private static dynamic PostToComment(string token, string messageResponse, string postId)
        {
            FacebookClient FbApp = new FacebookClient(token);
            IDictionary<string, object> postArgs = new Dictionary<string, object>();
            postArgs["message"] = messageResponse;
            if (token != null) postArgs["access_token"] = token;
            var result = FbApp.Post("/" + postId + "/comments", postArgs);

            return result;
        }
    
    }
    */

}
